#include <algorithm>
#include <cstring>
#include <iostream>
using namespace std;
using ll = long long;
using T = int;
T rad(); // quick read
const int inf = 0x3f3f3f3f;
#define rf(i, n) for (int i = 1; i <= (n); ++i)
const int max_size = 5 + 100;
const int maxn = 5 + 100;

int n;
bool visit[maxn];
int a[maxn];

void dfs2(int dep, int sum) {
    if (dep == 3) {
        cout << sum << endl;
        return;
    }
    dfs2(dep + 1, sum + a[dep]);
    dfs2(dep + 1, sum - a[dep]);
    dfs2(dep + 1, sum * a[dep]);
}

void dfs(int dep) {
    if (dep == 4) {
        for (int i = 0; i < 4; ++i)
            cout << a[i] << ' ';
        cout << endl;
        dfs2(1, a[0]);
        return;
    }
    for (int i = 1; i <= 4; ++i) {
        if (visit[i]) continue;
        a[dep] = i;
        visit[i] = 1;
        dfs(dep + 1);
        visit[i] = 0;
    }
}

int main() {
    // dfs(0);
    // cin >> n;
    if (n < 4) {
        cout << -1;
        return 0;
    }
    if (n == 4) {
        printf("(2+4)*3-1");
    } else if (n & 1) { // odd
        printf("(2*(5-3)*4+1)");
        for (int i = 7; i <= n; i += 2)
            printf("*(%d-%d)", i, i - 1);
    } else {
        printf("(2*(3-1)*4+6-5)");
        for (int i = 8; i <= n; i += 2)
            printf("*(%d-%d)", i, i - 1);
    }
}

T rad() {
    T back = 0;
    int ch = 0, posi = 0;
    for (; ch < '0' || ch > '9'; ch = getchar())
        posi = ch ^ '-';
    for (; ch >= '0' && ch <= '9'; ch = getchar())
        back = (back << 1) + (back << 3) + (ch & 0xf);
    return posi ? back : -back;
}